// 2025/7/23
// 分组

#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    
    // 统计每个声部的人数
    unordered_map<int, int> voice_counts;
    for (int i = 0; i < n; ++i) {
        int voice;
        cin >> voice;
        voice_counts[voice]++;
    }
    
    // 提取人数到向量中，方便处理
    vector<int> counts;
    for (auto& pair : voice_counts) {
        counts.push_back(pair.second);
    }
    
    int k = counts.size();  // 声部数量，即最小可能的组数
    
    // 无法分组的情况
    if (k > m || m > n) {
        cout << -1 << endl;
        return 0;
    }
    
    // 二分查找：寻找最大组人数的最小值
    int left = 1;
    int right = *max_element(counts.begin(), counts.end());  // 初始上限为最大声部人数
    int result = right;
    
    while (left <= right) {
        int mid = left + (right - left) / 2;  // 当前猜测的最大组人数
        
        // 计算在当前最大组人数限制下，至少需要多少组
        int total_groups = 0;
        for (int cnt : counts) {
            // 向上取整：cnt人每组最多mid人，需要多少组
            total_groups += (cnt + mid - 1) / mid;
            // 提前判断，避免不必要的计算
            if (total_groups > m) break;
        }
        
        // 如果需要的组数不超过m，说明当前mid是可行的，尝试更小的值
        if (total_groups <= m) {
            result = mid;
            right = mid - 1;
        } else {
            // 否则需要增大最大组人数
            left = mid + 1;
        }
    }
    
    cout << result << endl;
    return 0;
}
    